Ссылки по теме

*   [systemd (Русский)](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Systemd (Русский)")
*   [systemd-nspawn](/index.php/Systemd-nspawn "Systemd-nspawn")
*   [Network bridge](/index.php/Network_bridge "Network bridge")
*   [Настройка сети](/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8 "Настройка сети")
*   [Настройка беспроводной сети](/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B1%D0%B5%D1%81%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8 "Настройка беспроводной сети")

**Состояние перевода:** На этой странице представлен перевод статьи [Systemd-networkd](/index.php/Systemd-networkd "Systemd-networkd"). Дата последней синхронизации: 28 февраля 2016\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Systemd-networkd&diff=0&oldid=423358).

*systemd-networkd* - это системный демон, который управляет сетевыми настройками. По мере появления он обнаруживает и настраивает сетевые устройства, также может создавать виртуальные сетевые устройства. Эта служба может быть особенно полезной для установки сложных сетевых настроек, для контейнера управляемым [Systemd-nspawn](/index.php/Systemd-nspawn "Systemd-nspawn") или для виртуальных машин. А также отлично работает на простом соединении.

## Contents

*   [1 Основы использования](#.D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D1.8B_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F)
    *   [1.1 Обязательные службы и установки](#.D0.9E.D0.B1.D1.8F.D0.B7.D0.B0.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D1.81.D0.BB.D1.83.D0.B6.D0.B1.D1.8B_.D0.B8_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B8)
    *   [1.2 Примеры настроек](#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BA)
        *   [1.2.1 Проводной адаптер с DHCP](#.D0.9F.D1.80.D0.BE.D0.B2.D0.BE.D0.B4.D0.BD.D0.BE.D0.B9_.D0.B0.D0.B4.D0.B0.D0.BF.D1.82.D0.B5.D1.80_.D1.81_DHCP)
        *   [1.2.2 Проводной адаптер использующий статический IP](#.D0.9F.D1.80.D0.BE.D0.B2.D0.BE.D0.B4.D0.BD.D0.BE.D0.B9_.D0.B0.D0.B4.D0.B0.D0.BF.D1.82.D0.B5.D1.80_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D1.8E.D1.89.D0.B8.D0.B9_.D1.81.D1.82.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_IP)
        *   [1.2.3 Беспроводной адаптер](#.D0.91.D0.B5.D1.81.D0.BF.D1.80.D0.BE.D0.B2.D0.BE.D0.B4.D0.BD.D0.BE.D0.B9_.D0.B0.D0.B4.D0.B0.D0.BF.D1.82.D0.B5.D1.80)
        *   [1.2.4 Проводные и беспроводные адаптеры на одной машине](#.D0.9F.D1.80.D0.BE.D0.B2.D0.BE.D0.B4.D0.BD.D1.8B.D0.B5_.D0.B8_.D0.B1.D0.B5.D1.81.D0.BF.D1.80.D0.BE.D0.B2.D0.BE.D0.B4.D0.BD.D1.8B.D0.B5_.D0.B0.D0.B4.D0.B0.D0.BF.D1.82.D0.B5.D1.80.D1.8B_.D0.BD.D0.B0_.D0.BE.D0.B4.D0.BD.D0.BE.D0.B9_.D0.BC.D0.B0.D1.88.D0.B8.D0.BD.D0.B5)
        *   [1.2.5 IPv6 расширения конфиденциальности](#IPv6_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F_.D0.BA.D0.BE.D0.BD.D1.84.D0.B8.D0.B4.D0.B5.D0.BD.D1.86.D0.B8.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D0.B8)
*   [2 Файлы настроек](#.D0.A4.D0.B0.D0.B9.D0.BB.D1.8B_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BA)
    *   [2.1 Файлы network](#.D0.A4.D0.B0.D0.B9.D0.BB.D1.8B_network)
        *   [2.1.1 [Match] раздел](#.5BMatch.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB)
        *   [2.1.2 [Network] раздел](#.5BNetwork.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB)
        *   [2.1.3 [Address] раздел](#.5BAddress.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB)
        *   [2.1.4 [Route] раздел](#.5BRoute.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB)
    *   [2.2 Файлы NetDev](#.D0.A4.D0.B0.D0.B9.D0.BB.D1.8B_NetDev)
        *   [2.2.1 [Match] раздел](#.5BMatch.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB_2)
        *   [2.2.2 [Netdev] раздел](#.5BNetdev.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB)
    *   [2.3 Файлы link](#.D0.A4.D0.B0.D0.B9.D0.BB.D1.8B_link)
        *   [2.3.1 [Match] раздел](#.5BMatch.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB_3)
        *   [2.3.2 [Link] раздел](#.5BLink.5D_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB)
*   [3 Использование с контейнерами](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81_.D0.BA.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80.D0.B0.D0.BC.D0.B8)
    *   [3.1 Основная DHCP сеть](#.D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D0.BD.D0.B0.D1.8F_DHCP_.D1.81.D0.B5.D1.82.D1.8C)
    *   [3.2 DHCP с двумя различными IP](#DHCP_.D1.81_.D0.B4.D0.B2.D1.83.D0.BC.D1.8F_.D1.80.D0.B0.D0.B7.D0.BB.D0.B8.D1.87.D0.BD.D1.8B.D0.BC.D0.B8_IP)
        *   [3.2.1 Интерфейс моста](#.D0.98.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81_.D0.BC.D0.BE.D1.81.D1.82.D0.B0)
        *   [3.2.2 Привязать Ethernet для моста](#.D0.9F.D1.80.D0.B8.D0.B2.D1.8F.D0.B7.D0.B0.D1.82.D1.8C_Ethernet_.D0.B4.D0.BB.D1.8F_.D0.BC.D0.BE.D1.81.D1.82.D0.B0)
        *   [3.2.3 Сетевой мост](#.D0.A1.D0.B5.D1.82.D0.B5.D0.B2.D0.BE.D0.B9_.D0.BC.D0.BE.D1.81.D1.82)
        *   [3.2.4 Добавить опцию для загрузки контейнера](#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.B8.D1.82.D1.8C_.D0.BE.D0.BF.D1.86.D0.B8.D1.8E_.D0.B4.D0.BB.D1.8F_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B8_.D0.BA.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80.D0.B0)
        *   [3.2.5 Результат](#.D0.A0.D0.B5.D0.B7.D1.83.D0.BB.D1.8C.D1.82.D0.B0.D1.82)
        *   [3.2.6 Уведомление](#.D0.A3.D0.B2.D0.B5.D0.B4.D0.BE.D0.BC.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5)
    *   [3.3 Статические IP-сети](#.D0.A1.D1.82.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_IP-.D1.81.D0.B5.D1.82.D0.B8)
*   [4 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5)

## Основы использования

Пакет [systemd](https://www.archlinux.org/packages/?name=systemd) является частью установки Arch по умолчанию, и содержит все необходимые файлы для работы в проводной сети. Беспроводные адаптеры могут быть установлены другими службами, такими как [wpa_supplicant](/index.php/Wpa_supplicant "Wpa supplicant"), они будут рассмотрены далее в этой статье.

### Обязательные службы и установки

Чтобы использовать *systemd-networkd*, [запустите](/index.php/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D0%B5 "Запустите") следующие две службы и [включите](/index.php/%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5 "Включите") их работу при загрузке системы:

*   `systemd-networkd.service`
*   `systemd-resolved.service`

**Примечание:** *systemd-resolved* на самом деле требуется, только если вы указали записи DNS в файлах *.network* или если вы хотите получить адреса DNS от DHCP клиента networkd.

Для совместимости с [resolv.conf](/index.php/Resolv.conf "Resolv.conf"), удалите или переименуйте существующий файл и создайте следующую символическую ссылку:

```
# ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

```

Для того, чтобы использовать локальную DNS-заглушку распознающую *systemd-resolved* (и, следовательно, использовать LLMNR и DNS слияние каждого интерфейса), замените `dns` с `resolve` в `/etc/nsswitch.conf`:

```
hosts: files **resolve** myhostname

```

Смотрите [systemd-resolved(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd-resolved.8), [resolved.conf(5)](https://jlk.fjfi.cvut.cz/arch/manpages/man/resolved.conf.5) и [Systemd README](https://github.com/systemd/systemd/blob/master/README#L205).

**Примечание:** Systemd's `resolve` не может найти локальный домен, когда дается только имя хоста, даже когда `UseDomains=yes` или `Domains=[domain-list]` присутствует в соответствующем файле `.network`, и что файл производит ожидаемый `search [domain-list]` в `resolv.conf`. Если вы столкнулись с этой проблемой:

*   Переключитесь на использование полного доменного имени
*   Используйте разрешения имен хостов `/etc/hosts`
*   Откатитесь назад, используя glibc's `dns` вместо systemd's `resolve`

### Примеры настроек

Все настройки этого раздела хранятся в `foo.network` в `/etc/systemd/network`. Для получения полного списка опций и порядка обработки, см. [#Файлы настроек](#.D0.A4.D0.B0.D0.B9.D0.BB.D1.8B_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BA) и страницу man `systemd.network`.

Systemd/udev автоматически назначает предсказуемые, стабильные имена сетевого интерфейса для всех локальных Ethernet, WLAN, и WWAN интерфейсов. Воспользуйтесь `networkctl list`, - список устройств в системе.

После внесения изменений в файл настройки, перезагрузите демон networkd.

```
# systemctl restart systemd-networkd 

```

**Примечание:** В приведенных ниже примерах, **enp1s0** это проводной адаптер, а **wlp2s0** беспроводной адаптер. Эти имена могут быть другими в разных системах.

#### Проводной адаптер с DHCP

 `/etc/systemd/network/*wired*.network` 
```
[Match]
Name=enp1s0

[Network]
DHCP=ipv4

```

#### Проводной адаптер использующий статический IP

 `/etc/systemd/network/*wired*.network` 
```
[Match]
Name=enp1s0

[Network]
Address=10.1.10.9/24
Gateway=10.1.10.1

```

Для больших вариантов, таких как сети с указанием DNS-серверов и широковещательного адреса, смотрите страницу man `systemd.network(5)`.

#### Беспроводной адаптер

Для того, чтобы подключиться к беспроводной сети с *systemd-networkd*, беспроводной адаптер настраивается с другой службой, например потребуется [wpa_supplicant](/index.php/Wpa_supplicant_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Wpa supplicant (Русский)"). В этом примере, соответствующий файл службы Systemd, которая должна быть включена в `wpa_supplicant@wlp2s0.service`.

 `/etc/systemd/network/*wireless*.network` 
```
[Match]
Name=wlp2s0

[Network]
DHCP=ipv4

```

Если беспроводной адаптер имеет статический IP-адрес, настройка является такой же (кроме имени интерфейса) как в [проводном адаптере](#.D0.9F.D1.80.D0.BE.D0.B2.D0.BE.D0.B4.D0.BD.D0.BE.D0.B9_.D0.B0.D0.B4.D0.B0.D0.BF.D1.82.D0.B5.D1.80_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D1.8E.D1.89.D0.B8.D0.B9_.D1.81.D1.82.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_IP).

#### Проводные и беспроводные адаптеры на одной машине

Такая настройка проводной и беспроводной связи DHCP IP (использующих **Metric** директивы) даст возможность ядру решать на лету, какой из них использовать. Таким образом, когда проводное соединение отключено, никакого обрыва соединения не будет.

Маршрут метрики ядра (также как настройка *ip*) решает, какой маршрут использовать для исходящих пакетов, в тех случаях, когда установлено несколько **Match**. Это происходит в том случае, когда оба устройства (проводное и беспроводное) в системе имеют активные соединения. Чтобы разорвать связь, ядро использует метрики. Если одно из соединений завершается, другое автоматически выигрывает без наличия разрывов (текущие трансферты могут до сих пор не справиться с этим хорошо, но это в другом слое OSI).

**Примечание:** Опция **Metric** для статических маршрутов, а опция **RouteMetric** для не использующих статические маршруты.
 `/etc/systemd/network/*wired*.network` 
```
[Match]
Name=enp1s0

[Network]
DHCP=ipv4

[DHCP]
RouteMetric=10

```
 `/etc/systemd/network/*wireless*.network` 
```
[Match]
Name=wlp2s0

[Network]
DHCP=ipv4

[DHCP]
RouteMetric=20

```

#### IPv6 расширения конфиденциальности

**Примечание:** Broken on v228 [https://github.com/systemd/systemd/issues/2242](https://github.com/systemd/systemd/issues/2242)

## Файлы настроек

Файлы настроек расположены в `/usr/lib/systemd/network`, в динамическом каталоге выполнения сети `/run/systemd/network` и локальном каталоге сетевого администрирования `/etc/systemd/network`. Файлы в `/etc/systemd/network` имеют самый высокий приоритет.

Существуют три типа файлов настройки.

*   **.network** файлы. Они будут применять сетевую настройку для *matching* (совпадения) устройства
*   **.netdev** файлы. Они создадут *virtual network device* для среды *matching*
*   **.link** файлы. Когда появится сетевое устройство, [udev](/index.php/Udev "Udev") сначала посмотрит *matching* файла **.link**

Все они следуют тем же правилам:

*   Если **все** условия в `[Match]` разделе совпали, профиль будет активирован
*   Пустая секция `[Match]` означает, что профиль будет применяться в любом случае (можно сравнить с шуткой `*`)
*   Каждая запись с синтаксисом `NAME=VALUE` является ключевой
*   все файлы настроек вместе сортируются и обрабатываются в лексическом порядке, независимо от каталога, в котором они живут
*   файлы с одинаковым именем сменяют друг друга

**Совет:**

*   переопределить системный файл `/usr/lib/systemd/network` на постоянную основу (то есть даже после обновления) можно поместив файл с таким же именем в каталог `/etc/systemd/network` и создав для него символьную ссылку в `/dev/null`
*   символ `*` можно использовать в `VALUE` (например, значению `en*` будет соответствовать любое устройство Ethernet)
*   в соответствии с информацией, данной в [этом сообщении Arch-general](https://mailman.archlinux.org/pipermail/arch-general/2014-March/035381.html), лучше всего выставлять параметры для конкретных сетевых контейнеров *внутри контейнера* при помощи файлов **networkd**

### Файлы network

Эти файлы направлены на установку переменных сетевых настроек, в основном для серверов и контейнеров.

Ниже приводится основная структура файла `*МойПрофиль*.network`:

 `/etc/systemd/network/*МойПрофиль*.network` 
```
[Match]
*вертикальный список ключей*

[Network]
*вертикальный список ключей*

[Address]
*вертикальный список ключей*

[Route]
*вертикальный список ключей*

```

#### [Match] раздел

Наиболее распространенные ключи:

*   `Name=` имя устройства (например Br0, enp4s0, en*)
*   `Host=` имя хоста машины
*   `Virtualization=` проверить, является ли система выполненной в виртуализированной среде или нет. `Virtualization=no` ключ будет применяться только на вашей машине, в то время как `Virtualization=yes` применяются к любому контейнеру или VM.

#### [Network] раздел

Наиболее распространенные ключи:

*   `DHCP=` включает поддержку [DHCPv4](https://en.wikipedia.org/wiki/ru:DHCP "wikipedia:ru:DHCP") и/или DHCPv6\. Принимает: `yes`, `no`, `ipv4` или `ipv6`
*   `DNS=` является [DNS](https://en.wikipedia.org/wiki/ru:DNS "wikipedia:ru:DNS") адрес сервера. Вы можете указать этот параметр более одного раза
*   `Bridge=` это имя моста, чтобы добавить ссылку на
*   `IPForward=` по умолчанию `no`. Это разрешает IP forwarding, выполняя пересылку в соответствии с таблицей маршрутизации и необходим для настройк [Internet sharing](/index.php/Internet_sharing "Internet sharing"). Заметим, что включение `IPForward=` относится ко *всем* сетевым интерфейсам.
*   `Domains=` список доменов, используемых для разрешения имен DNS хоста.

Для подробностей, смотрите `systemd.network(5)`.

#### [Address] раздел

Большинство общих ключ в разделе `[Address]`:

*   `Address=` статический **IPv4** или **IPv6** адрес и его длина префикса, разделенных символом `/` (например `192.168.1.90/24`). Эта опция **обязательна**, если не используется DHCP

#### [Route] раздел

Большинство общих ключ в разделе `[Route]`:

*   `Gateway=` это адрес шлюза вашей машины. Эта опция **обязательна** если не используется DHCP.

Обратитесь к `systemd.network(5)` для исчерпывающего списка ключей.

**Совет:** you can put the `Address=` and `Gateway=` keys in the `[Network]` section as a short-hand if `Address=` contains only an Address key and `Gateway=` section contains only a Gateway key

### Файлы NetDev

Эти файлы будут создавать виртуальные сетевые устройства.

Ниже приводится основная структура файла*Mydevice*.netdev:

 `/etc/systemd/network/*MyDevice*.netdev` 
```
[Match]
*вертикальный список ключей*

[NetDev]
*вертикальный список ключей*

```

#### [Match] раздел

Большинство общих ключ в `Host=` и `Virtualization=`

#### [Netdev] раздел

Наиболее распространенные ключи:

*   `Name=` это имя интерфейса, используемое при создании netdev. Эта опция **обязательна**
*   `Kind=` это вид netdev. Например, поддерживаются: *bridge*, *bond*, *vlan*, *veth*, *sit*, и т.д. Эта опция **обязательна**

Чтобы увидеть исчерпывающий перечень ключей, обратитесь к странице справочного руководства `systemd.netdev(5)`

### Файлы link

Эти файлы являются альтернативой пользовательским правилам [udev](/index.php/Udev_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Udev (Русский)") и будут применяться при как появлении устройства.

Ниже приводится основная структура файла *МоеУстройство*.link:

 `/etc/systemd/network/*МоеУстройство*.link` 
```
[Match]
*вертикальный список ключей*

[Link]
*вертикальный список ключей*

```

Раздел `[Match]` будет определять, если данный связующий файл может быть применён к данному устройству, когда раздел `[Link]` определяет настройку устройства.

#### [Match] раздел

Наиболее распространенные ключи `MACAddress=`, `Host=` и `Virtualization=`.

`Type=` тип устройства (например vlan)

#### [Link] раздел

Наиболее распространенные ключи:

`MACAddressPolicy=` либо *persistent* когда оборудование имеет постоянный MAC-адрес (должно быть на большинстве аппаратных) или *random*, который даёт случайный MAC-адрес устройства.

`MACAddress=` должен использоваться, когда не указан `MACAddressPolicy=`

**Примечание:** Системе, как правило, `/usr/lib/systemd/network/99-default.link` достаточно для большинства случаев.

## Использование с контейнерами

Служба доступна с [systemd](https://www.archlinux.org/packages/?name=systemd) >= 210\. Хотите сипользовать [#Основы использования systemctl|включение и запуск](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Systemd (Русский)") `systemd-networkd.service` на хосте и контейнере.

Для отладки, настоятельно рекомендуется [установить](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)") пакеты [bridge-utils](https://www.archlinux.org/packages/?name=bridge-utils), [net-tools](https://www.archlinux.org/packages/?name=net-tools) и [iproute2](https://www.archlinux.org/packages/?name=iproute2).

Если вы используете *systemd-nspawn*, вам, возможно, потребуется изменить `systemd-nspawn@.service` и добавить параметры загрузки в строку `ExecStart`. Для исчерпывающего списка варианттов, обратитесь к [systemd-nspawn(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd-nspawn.1). Обратите внимание, если вы хотите, использовать автоматическую настройку DNS от DHCP, то Вам необходимо включить `systemd-resolved` и символьную ссылку `/run/systemd/resolve/resolv.conf` на `/etc/resolv.conf`. Для большей информации, смотрите `systemd-resolved.service(8)`.

Before you start to configure your container network, it is useful to:

*   disable all your [netctl](/index.php/Netctl "Netctl") services. This will avoid any potential conflicts with `systemd-networkd` and make all your configurations easier to test. Furthermore, odds are high you will end with few or even no [netctl](/index.php/Netctl "Netctl") activated profiles. The `netctl list` command will output a list of all your profiles, with the activated one being starred.
*   disable the `systemd-nspawn@.service` and use the `systemd-nspawn -bnD /path_to/your_container/` command as root to boot the container. To log off and shutdown inside the container `systemctl poweroff` is used as root. Once the network setting meets your requirements, [enable and start](/index.php/Systemd#Basic_systemctl_usage "Systemd") `systemd-nspawn@.service`
*   disable the `dhcpcd.service` if enabled on your system, since it activates *dhcpcd* on **all** interfaces
*   make sure you have no [netctl](/index.php/Netctl "Netctl") profiles activated in the container, and ensure that `systemd-networkd.service` is neither enabled nor started
*   make sure you do not have any [iptables](/index.php/Iptables "Iptables") rules which can block traffic
*   * make sure *packet forwarding* is [enabled](/index.php/Internet_sharing#Enable_packet_forwarding "Internet sharing") if you want to let containers access the internet. Make sure that your `.network` file does not accidentally turn off forwarding because if you do not have a `IPForward=1` setting in it, `systemd-networkd` will turn off forwarding on this interface, even if you have it enabled globally.
*   when the daemon is started the systemd `networkctl` command displays the status of network interfaces.

}}

For the set-up described below,

*   we will limit the output of the `ip a` command to the concerned interfaces
*   we assume the *host* is your main OS you are booting to and the *container* is your guest virtual machine
*   all interface names and IP addresses are only examples

}}

### Основная DHCP сеть

Такая настройка включит DHCP IP для хоста и контейнера. В этом случае, обе системы будут иметь одинаковый IP, поскольку они разделяют одни и те же интерфейсы.

 `/etc/systemd/network/*MyDhcp*.network` 
```
[Match]
Name=en*

[Network]
DHCP=ipv4

```

Когда, [включен](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.92.D0.BA.D0.BB.D1.8E.D1.87.D0.B8.D1.82.D1.8C_.D1.8E.D0.BD.D0.B8.D1.82_.D0.B2_.D0.B0.D0.B2.D1.82.D0.BE.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D0.BA_.D0.BF.D1.80.D0.B8_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B "Systemd (Русский)") и запущен `systemd-networkd.service` в вашем контейнере.

Вы, конечно, можете заменить `en*` на полное имя вашего сетевого устройства, получив его на выходе команды `ip link`.

*   на хосте и контейнере:

 `$ ip a` 
```
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 14:da:e9:b5:7a:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.72/24 brd 192.168.1.255 scope global enp7s0
       valid_lft forever preferred_lft forever
    inet6 fe80::16da:e9ff:feb5:7a88/64 scope link 
       valid_lft forever preferred_lft forever

```

По умолчанию имя хоста, полученное от DHCP-сервера будет использоваться в качестве переходного хоста.

Чтобы изменить его добавьте `UseHostname=false` в раздел `[DHCPv4]`

 `/etc/systemd/network/*MyDhcp*.network` 
```
[DHCPv4]
UseHostname=false

```

Если вы не хотите настраивать DNS в `/etc/resolv.conf` и хотите полагаться на DHCP для его настройки, вам нужно [включить](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.92.D0.BA.D0.BB.D1.8E.D1.87.D0.B8.D1.82.D1.8C_.D1.8E.D0.BD.D0.B8.D1.82_.D0.B2_.D0.B0.D0.B2.D1.82.D0.BE.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D0.BA_.D0.BF.D1.80.D0.B8_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B "Systemd (Русский)") `systemd-resolved.service` и сделать символическую ссылку `/run/systemd/resolve/resolv.conf` на `/etc/resolv.conf`

```
# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

```

Для подробной информации смотрите `systemd-resolved.service(8)`.

### DHCP с двумя различными IP

#### Интерфейс моста

Создайте интерфейс виртуального мост

 `/etc/systemd/network/*MyBridge*.netdev` 
```
[NetDev]
Name=br0
Kind=bridge

```

На хосте и контейнере:

 `$ ip a` 
```
3: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default 
    link/ether ae:bd:35:ea:0c:c9 brd ff:ff:ff:ff:ff:ff

```

Обратите внимание что интерфейс br0 в списке, но не работает (DOWN).

#### Привязать Ethernet для моста

Измените `/etc/systemd/network/*MyDhcp*.network`, чтобы удалить DHCP, мосту необходим интерфейс для привязки не с IP, а также добавьте ключ, чтобы связать это устройство для BR0, давайте изменим свое название на одно более актуальное.

 `/etc/systemd/network/*MyEth*.network` 
```
[Match]
Name=en*

[Network]
Bridge=br0

```

#### Сетевой мост

Создание сетевого профиля для моста

 `/etc/systemd/network/*MyBridge*.network` 
```
[Match]
Name=br0

[Network]
DHCP=ipv4

```

#### Добавить опцию для загрузки контейнера

Поскольку мы хотим, дать выделенный IP для хоста и контейнера, мы должны *Отключить* сеть контейнера от хоста. Чтобы сделать это, добавьте опцию `--network-bridge=br0` в вашу команду загрузки контейнера.

```
# systemd-nspawn --network-bridge=br0 -bD /path_to/my_container

```

#### Результат

*   на хосте

 `$ ip a` 
```
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 14:da:e9:b5:7a:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.87/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::16da:e9ff:feb5:7a88/64 scope link 
       valid_lft forever preferred_lft forever
6: vb-*MyContainer*: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether d2:7c:97:97:37:25 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::d07c:97ff:fe97:3725/64 scope link 
       valid_lft forever preferred_lft forever

```

*   на контейнере

 `$ ip a` 
```
2: host0: <BROADCAST,MULTICAST,ALLMULTI,AUTOMEDIA,NOTRAILERS,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 5e:96:85:83:a8:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.73/24 brd 192.168.1.255 scope global host0
       valid_lft forever preferred_lft forever
    inet6 fe80::5c96:85ff:fe83:a85d/64 scope link 
       valid_lft forever preferred_lft forever

```

#### Уведомление

*   we have now one IP address for Br0 on the host, and one for host0 in the container
*   two new interfaces have appeared: `vb-*MyContainer*` in the host and `host0` in the container. This comes as a result of the `--network-bridge=br0` option. This option *implies* another option, `--network-veth`. This means a *virtual Ethernet link* has been created between host and container.
*   the DHCP address on `host0` comes from the system `/usr/lib/systemd/network/80-container-host0.network` file.
*   на хосте

 `$ brctl show` 
```
bridge name	bridge id		STP enabled	interfaces
br0		8000.14dae9b57a88	no		enp7s0
							vb-*MyContainer*

```

Приведенный выше вывод команды подтверждает, что мы имеем мост с двумя переплетёнными/связанными интерфейсами.

*   на хосте

 `$ ip route` 
```
default via 192.168.1.254 dev br0 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.87

```

*   на контейнере

 `$ ip route` 
```
default via 192.168.1.254 dev host0 
192.168.1.0/24 dev host0  proto kernel  scope link  src 192.168.1.73

```

the above command outputs confirm we have activated `br0` and `host0` interfaces with an IP address and Gateway 192.168.1.254\. The gateway address has been automatically grabbed by *systemd-networkd*

 `$ cat /run/systemd/resolve/resolv.conf` 
```
nameserver 192.168.1.254

```

### Статические IP-сети

Установка статического IP для каждого устройства может быть полезна в случае развертывания веб-служб (например, FTP, HTTP, SSH). Each device will keep the same MAC address across reboots if your system `/usr/lib/systemd/network/99-default.link` file has the `MACAddressPolicy=persistent` option (it has by default). Thus, you will easily route any service on your Gateway to the desired device. First, we shall get rid of the system `/usr/lib/systemd/network/80-container-host0.network` file. To do it in a permanent way (e.g even after upgrades), do the following on container. This will mask the file `/usr/lib/systemd/network/80-container-host0.network` since files of the same name in `/etc/systemd/network` take priority over `/usr/lib/systemd/network`.

```
# ln -sf /dev/null /etc/systemd/network/80-container-host0.network

```

Then, [enable and start](/index.php/Systemd#Basic_systemctl_usage "Systemd") `systemd-networkd` on your container.

The needed configuration files:

*   на хосте

```
/etc/systemd/network/*MyBridge*.netdev
/etc/systemd/network/*MyEth*.network

```

Измените *MyBridge*.network

 `/etc/systemd/network/*MyBridge*.network` 
```
[Match]
Name=br0

[Network]
DNS=192.168.1.254
Address=192.168.1.87/24
Gateway=192.168.1.254

```

*   на контейнере

 `/etc/systemd/network/*MyVeth*.network` 
```
[Match]
Name=host0

[Network]
DNS=192.168.1.254
Address=192.168.1.94/24
Gateway=192.168.1.254

```

## Смотрите также

*   [systemd.networkd man page](http://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html)
*   [Tom Gundersen, main systemd-networkd developer, G+ home page](https://plus.google.com/u/0/+TomGundersen/posts)
*   [Tom Gundersen posts on Core OS blog](https://coreos.com/blog/intro-to-systemd-networkd/)
*   [How to set up systemd-networkd with wpa_supplicant](https://bbs.archlinux.org/viewtopic.php?pid=1393759#p1393759) (WonderWoofy's walkthrough on Arch forums)